home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / csdtpckr / cscal.ctl next >
Text File  |  1998-10-31  |  21KB  |  614 lines

  1. VERSION 5.00
  2. Begin VB.UserControl CSCal 
  3.    ClientHeight    =   315
  4.    ClientLeft      =   0
  5.    ClientTop       =   0
  6.    ClientWidth     =   1275
  7.    ScaleHeight     =   21
  8.    ScaleMode       =   3  'Pixel
  9.    ScaleWidth      =   85
  10.    ToolboxBitmap   =   "CSCal.ctx":0000
  11. End
  12. Attribute VB_Name = "CSCal"
  13. Attribute VB_GlobalNameSpace = False
  14. Attribute VB_Creatable = True
  15. Attribute VB_PredeclaredId = False
  16. Attribute VB_Exposed = True
  17. Option Explicit
  18. '
  19. ' Written By: Bob Walker
  20. '             bob@computersimple.com
  21. ' For       : Computer Simple, Inc.
  22. '             www.computersimple.com
  23. '
  24. '
  25. ' Constants needed
  26. '
  27. Private Const DATETIMEPICK_CLASS = "SysDateTimePick32"
  28. '
  29. Private Const ICC_DATE_CLASSES = &H100&
  30. '
  31. Private Const SW_HIDE = 0
  32. Private Const SW_SHOWNORMAL = 1
  33. '
  34. Private Const GDTR_MIN = 1&
  35. Private Const GDTR_MAX = 2&
  36. '
  37. Private Const DTM_GETSYSTEMTIME = (DTM_FIRST + 1)
  38. Private Const DTM_SETSYSTEMTIME = (DTM_FIRST + 2)
  39. Private Const DTM_GETRANGE = (DTM_FIRST + 3)
  40. Private Const DTM_SETRANGE = (DTM_FIRST + 4)
  41. Private Const DTM_SETFORMAT = (DTM_FIRST + 5)
  42. Private Const DTM_SETMCCOLOR = (DTM_FIRST + 6)
  43. Private Const DTM_GETMCCOLOR = (DTM_FIRST + 7)
  44. Private Const DTM_SETMCFONT = (DTM_FIRST + 9)
  45. Private Const DTM_GETMCFONT = (DTM_FIRST + 10)
  46. '
  47. Private Const DTS_UPDOWN = &H1&            '// use UPDOWN instead of MONTHCAL
  48. Private Const DTS_SHOWNONE = &H2&          '// allow a NONE selection
  49. Private Const DTS_SHORTDATEFORMAT = &H0&   '// use the short date format (app must forward WM_WININICHANGE messages)
  50. Private Const DTS_LONGDATEFORMAT = &H4&    '// use the long date format (app must forward WM_WININICHANGE messages)
  51. Private Const DTS_TIMEFORMAT = &H9&        '// use the time format (app must forward WM_WININICHANGE messages)
  52. Private Const DTS_APPCANPARSE = &H10&      '// allow user entered strings (app MUST respond to DTN_USERSTRING)
  53. Private Const DTS_RIGHTALIGN = &H20&       '// right-align popup instead of left-align it
  54. '
  55. Private Const MCSC_TEXT = 1&         '   // the dates
  56. Private Const MCSC_TITLEBK = 2&      '   // background of the title and the text day names
  57. Private Const MCSC_TITLETEXT = 3&    '   // text of the date string in the title
  58. Private Const MCSC_MONTHBK = 4&      '   // background within the month cal
  59. Private Const MCSC_TRAILINGTEXT = 5& '   // the text color of header & trailing days
  60. '
  61. Private Type ICCE
  62.     lSize As Long
  63.     lICC As Long
  64. End Type
  65. '
  66. Private Declare Function InitCommonControlsEx Lib "Comctl32.dll" (iccex As ICCE) As Boolean
  67. Private Declare Function CreateWindowEX Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
  68. Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
  69. Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  70. '
  71. 'Default Property Values:
  72. '
  73. Const m_def_Value = 0
  74. Const m_def_Min = Empty
  75. Const m_def_Max = Empty
  76. Const m_def_UpDown = False
  77. Const m_def_AlignRight = False
  78. Const m_def_TimePick = False
  79. Const m_def_FDOW = vbUseSystemDayOfWeek
  80. Const m_def_ShowToday = False
  81. Const m_def_ShowWeeks = False
  82. Const m_def_BackColor = SystemColorConstants.vbWindowBackground
  83. Const m_def_TextColor = SystemColorConstants.vbWindowText
  84. Const m_def_TitleBackColor = SystemColorConstants.vbActiveTitleBar
  85. Const m_def_TitleTextColor = SystemColorConstants.vbTitleBarText
  86. Const m_def_TrailTextColor = SystemColorConstants.vbGrayText
  87. '
  88. 'Property Variables:
  89. Dim m_Value As Date
  90. Dim m_Min As Variant
  91. Dim m_Max As Variant
  92. Dim m_UpDown As Boolean
  93. Dim m_AlignRight As Boolean
  94. Dim m_TimePick As Boolean
  95. Dim m_FDOW As VbDayOfWeek
  96. Dim m_ShowToday As Boolean
  97. Dim m_ShowWeeks As Boolean
  98. Dim m_BackColor As OLE_COLOR
  99. Dim m_TextColor As OLE_COLOR
  100. Dim m_TitleBackColor As OLE_COLOR
  101. Dim m_TitleTextColor As OLE_COLOR
  102. Dim m_TrailTextColor As OLE_COLOR
  103. '
  104. Dim m_hWnd As Long ' Stores the handle to the DatePicker
  105. Dim m_hWndProc As Long ' Stores the handle to the window subclass process
  106. Dim m_hWndUCProc As Long ' Stores the handle to the user control subclass process
  107. '
  108. Public Event Change()
  109. Attribute Change.VB_Description = "Event raised when the Value has been changed."
  110. '
  111. ' The HWnd??? properties are hidden, for use by
  112. ' the subclassed routines. They cannot be declared
  113. ' friend properties because the object reference kept in
  114. ' the collection could not access them as such.
  115. '
  116. Public Property Let HWndValue(ByVal New_Value As Date)
  117. Attribute HWndValue.VB_MemberFlags = "40"
  118.     If CanPropertyChange("Value") Then
  119.         m_Value = New_Value
  120.         PropertyChanged "Value"
  121.         RaiseEvent Change
  122.     End If
  123. End Property
  124. Public Property Get HWndProc() As Long
  125. Attribute HWndProc.VB_MemberFlags = "40"
  126.     HWndProc = m_hWndProc
  127. End Property
  128. Public Property Get HWndUCProc() As Long
  129. Attribute HWndUCProc.VB_MemberFlags = "40"
  130.     HWndUCProc = m_hWndUCProc
  131. End Property
  132. Public Property Get hwnd() As Long
  133. Attribute hwnd.VB_UserMemId = -515
  134. Attribute hwnd.VB_MemberFlags = "40"
  135.     hwnd = UserControl.hwnd
  136. End Property
  137. Public Property Get HWndDP() As Long
  138. Attribute HWndDP.VB_MemberFlags = "40"
  139.     HWndDP = m_hWnd
  140. End Property
  141. Private Sub UserControl_GotFocus()
  142.  
  143.     ' Move the focus into the textbox portion of the
  144.     ' date/time picker when the control receives focus
  145.     If m_hWnd <> 0 Then apiSetFocus m_hWnd
  146.  
  147. End Sub
  148. '
  149. Private Sub UserControl_Initialize()
  150.     
  151.     Dim iccex As ICCE
  152.     With iccex
  153.         .lSize = LenB(iccex)
  154.         .lICC = ICC_DATE_CLASSES
  155.     End With
  156.     InitCommonControlsEx iccex
  157.     
  158. End Sub
  159. '
  160. Private Sub UserControl_InitProperties()
  161.     
  162.     Set UserControl.Font = Ambient.Font
  163.     m_BackColor = m_def_BackColor
  164.     m_TextColor = m_def_TextColor
  165.     m_TitleBackColor = m_def_TitleBackColor
  166.     m_TitleTextColor = m_def_TitleTextColor
  167.     m_TrailTextColor = m_def_TrailTextColor
  168.     m_Min = m_def_Min
  169.     m_Max = m_def_Max
  170.     m_UpDown = m_def_UpDown
  171.     m_AlignRight = m_def_AlignRight
  172.     m_TimePick = m_def_TimePick
  173.     m_FDOW = m_def_FDOW
  174.     m_ShowToday = m_def_ShowToday
  175.     m_ShowWeeks = m_def_ShowWeeks
  176.     
  177.     m_Value = m_def_Value
  178.     
  179.     ' Only SubClass when in Run Mode, otherwise it'll crash
  180.     ' because the ChangeWinProc() isn't available (not running)
  181.     If Ambient.UserMode = True Then
  182.         'SubClass UserControl.hWnd
  183.         scCollection.Add Me, "H" & Hex(hwnd)
  184.         m_hWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf ChangeWinProc)
  185.     End If
  186.     
  187.     Create
  188.     
  189. End Sub
  190. '
  191. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  192.     
  193.     UserControl.Enabled = PropBag.ReadProperty("Enabled", True)
  194.     Set UserControl.Font = PropBag.ReadProperty("Font", Ambient.Font)
  195.     m_BackColor = PropBag.ReadProperty("BackColor", m_def_BackColor)
  196.     m_TextColor = PropBag.ReadProperty("TextColor", m_def_TextColor)
  197.     m_TitleBackColor = PropBag.ReadProperty("TitleBackColor", m_def_TitleBackColor)
  198.     m_TitleTextColor = PropBag.ReadProperty("TitleTextColor", m_def_TitleTextColor)
  199.     m_TrailTextColor = PropBag.ReadProperty("TrailTextColor", m_def_TrailTextColor)
  200.     m_Min = PropBag.ReadProperty("Min", m_def_Min)
  201.     m_Max = PropBag.ReadProperty("Max", m_def_Max)
  202.     m_UpDown = PropBag.ReadProperty("UpDown", m_def_UpDown)
  203.     m_AlignRight = PropBag.ReadProperty("AlignRight", m_def_AlignRight)
  204.     m_TimePick = PropBag.ReadProperty("TimePick", m_def_TimePick)
  205.     m_FDOW = PropBag.ReadProperty("FDOW", m_def_FDOW)
  206.     m_ShowToday = PropBag.ReadProperty("ShowToday", m_def_ShowToday)
  207.     m_ShowWeeks = PropBag.ReadProperty("ShowWeeks", m_def_ShowWeeks)
  208.     
  209.     m_Value = PropBag.ReadProperty("Value", m_def_Value)
  210.         
  211.     ' Only SubClass when in Run Mode, othewise it'll crash
  212.     ' because the ChangeWinProc() isn't available (not running)
  213.     If Ambient.UserMode = True Then
  214.         'SubClass UserControl.hWn